home *** CD-ROM | disk | FTP | other *** search
- // Filename: USERCODE.CPP
- // "CALC" Generated by Visual Programmer
- // Author: Blue Sky
-
- //
- // ***********************************************************************
- // Code in this file is initially generated by the Switch-It Module.
- // This file contains functions you can change
- // to provide whatever functionality you require.
- //
- //
- //
- // For more information,
- // see the section "How code is generated" in the documentation.
- //
- // ***********************************************************************
- //
-
- #include "AFXWIN.H"
- #include <limits.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include "CALC.H"
-
- WMPDEBUG
-
- #ifdef _DEBUG
- #undef THIS_FILE
- static char BASED_CODE THIS_FILE[] = __FILE__;
- #endif
-
-
- #include "USERCODE.WMC"
-
-
-
-
-
-
- // *************************************************************
- // Class definition for Class: Cwm_CALCClientDlg
- // Base Class : Cwm_CALCClientBaseDlg
- // Derived from MFC Class : CFormView
- // *************************************************************
-
- class Cwm_CALCClientDlg : public Cwm_CALCClientBaseDlg
- {
- public:
- Cwm_CALCClientDlg(LPCSTR lpszTemplateName);
- Cwm_CALCClientDlg() : Cwm_CALCClientBaseDlg() {};
-
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
-
- virtual BOOL OnInitDialog();
-
- // YOU CAN ADD YOUR OWN CODE HERE
-
-
- protected:
- BOOL bNewNumber;
- short sOperator;
- DWORD dwNumber;
- DWORD dwFirstNum;
-
- protected:
- //{{SIM_MSG_PROTO(Cwm_CALCClientDlg)
- // DO NOT EDIT what you see in this block of generated code.
- virtual BOOL OnCommand(WPARAM wParam,LPARAM lParam);
- //}}SIM_MSG_PROTO(Cwm_CALCClientDlg)
-
- public:
- void DisplayNumber(DWORD dwNumber);
- BOOL CalcInput(UINT wButton);
- DWORD Calculate (DWORD dwFirstNum,short sOperator,DWORD dwNum);
-
- protected:
- virtual BOOL PreTranslateMessage( MSG* pMsg);
- virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
-
- DECLARE_DYNCREATE(Cwm_CALCClientDlg)
-
- DECLARE_MESSAGE_MAP()
-
- };
-
-
- // *************************************************************
- // C Startup function client area controls CALCULATOR
- // *************************************************************
-
- CWnd* BLD_CALCClientClFunc (CWnd* pWnd)
- {
- Cwm_CALCClientDlg* pTheClientDlg;
- pTheClientDlg = new Cwm_CALCClientDlg("CALCULATOR");
- if(!pTheClientDlg->Create(pWnd))
- {
- BLDDisplayMessage (::GetActiveWindow (), BLD_CannotCreate,
- "CALCULATOR", MB_OK | MB_ICONHAND);
- return NULL;
- }
- return pTheClientDlg;
- }
-
-
-
- // *************************************************************
- // Member Functions for Class: Cwm_CALCClientDlg
- // Base Class : Cwm_CALCClientBaseDlg
- // Derived from MFC Class : CFormView
- // *************************************************************
-
- Cwm_CALCClientDlg::Cwm_CALCClientDlg(LPCSTR lpszTemplateName)
- : Cwm_CALCClientBaseDlg(lpszTemplateName)
- {
- bNewNumber = TRUE;
- sOperator = '=';
- dwNumber = 0L;
- dwFirstNum = 0L;
- }
-
-
-
- BOOL Cwm_CALCClientDlg::OnInitDialog()
- {
- return Cwm_CALCClientBaseDlg::OnInitDialog();
- }
-
-
- IMPLEMENT_DYNCREATE(Cwm_CALCClientDlg, Cwm_CALCClientBaseDlg)
-
- BEGIN_MESSAGE_MAP(Cwm_CALCClientDlg, Cwm_CALCClientBaseDlg)
-
- // YOU CAN ADD YOUR OWN CODE HERE
-
- //{{SIM_MSG_MAP(Cwm_CALCClientDlg)
- // DO NOT EDIT what you see in this block of generated code.
- //}}SIM_MSG_MAP(Cwm_CALCClientDlg)
-
- END_MESSAGE_MAP()
-
-
- BOOL Cwm_CALCClientDlg::PreTranslateMessage(MSG* pMsg)
- {
- HWND hButton;
- WPARAM wParam;
-
- if (pMsg->message==WM_CHAR)
- {
- wParam = pMsg->wParam;
- if ((wParam = toupper (wParam)) == VK_RETURN)
- wParam = '=' ;
-
- if (hButton = ::GetDlgItem(GetSafeHwnd(),wParam))
- {
- ::SendMessage(hButton,BM_SETSTATE,1,0L);
- ::SendMessage(hButton,BM_SETSTATE,0,0L);
- CalcInput(wParam);
- return TRUE;
- }
- }
- return Cwm_CALCClientBaseDlg::PreTranslateMessage(pMsg);
- }
-
-
- // Sorting out the different types of input
- BOOL Cwm_CALCClientDlg::CalcInput(UINT wButton)
- {
-
- if (wButton == VK_ESCAPE) // escape
- DisplayNumber (dwNumber = 0L);
-
- else if (isdigit(wButton)) // digit
- {
- if (bNewNumber)
- {
- dwFirstNum = dwNumber ;
- dwNumber = 0L ;
- }
- bNewNumber = FALSE ;
- if (dwNumber <= ULONG_MAX >> 4)
- DisplayNumber (dwNumber = 10 * dwNumber + wButton- '0') ;
- else
- MessageBeep (0) ;
- }
-
- else // operator
- {
- if (!bNewNumber)
- DisplayNumber(dwNumber=Calculate(dwFirstNum,sOperator,dwNumber));
- bNewNumber = TRUE;
- sOperator = wButton;
- }
- return TRUE;
- }
-
-
- // Perform calculation using the operator and numbers
- DWORD Cwm_CALCClientDlg::Calculate (DWORD dwFirstNum,short sOperator,DWORD dwNum)
- {
- switch (sOperator)
- {
- case '=' : return dwNum ;
- case '+' : return dwFirstNum + dwNum ;
- case '-' : return dwFirstNum - dwNum ;
- case '*' : return dwFirstNum * dwNum ;
- case '/' : return dwNum ? dwFirstNum / dwNum : ULONG_MAX ;
- default : return 0L ;
- }
- }
-
- // Display number in result (VK_ESCAPE) push button
- void Cwm_CALCClientDlg::DisplayNumber(DWORD dwNumber)
- {
- char szText[20];
-
- SetDlgItemText(ID_DISPLAY,_strupr (_ltoa (dwNumber,szText,10))) ;
- }
-
-
- //{{SIM_MSG_BODY(Cwm_CALCClientDlg)
- // Message Handler Functions for you to edit will come here.
-
-
-
-
- // MESSAGE HANDLER
- BOOL Cwm_CALCClientDlg::OnCommand(WPARAM wParam,LPARAM lParam)
- {
- SetFocus();
- CalcInput(wParam);
- // Insert your code here
- return Cwm_CALCClientBaseDlg::OnCommand(wParam,lParam);
- }
- //}}SIM_MSG_BODY(Cwm_CALCClientDlg)
-
-
-
- void Cwm_CALCClientDlg::DoDataExchange(CDataExchange* pDX)
- {
- Cwm_CALCClientBaseDlg::DoDataExchange(pDX);
-
- // YOU CAN ADD YOUR OWN CODE HERE
-
-
- //{{SIM_DATA_MAP(Cwm_CALCClientDlg)
- // DO NOT EDIT what you see in this block of generated code.
-
- //}}SIM_DATA_MAP
- }
-
-
-
- // *************************************************************
- // Cwm_CALCClientDlg diagnostics
-
- #ifdef _DEBUG
- void Cwm_CALCClientDlg::AssertValid() const
- {
- Cwm_CALCClientBaseDlg::AssertValid();
- }
-
- void Cwm_CALCClientDlg::Dump(CDumpContext& dc) const
- {
- Cwm_CALCClientBaseDlg::Dump(dc);
- }
-
- #endif //_DEBUG
-
-